package com.letoken.platform.repo.utlis;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.letoken.platform.pub.req.PageData;
import com.letoken.platform.pub.req.PageRes;
import com.letoken.platform.pub.req.PageSubData;
import com.letoken.platform.pub.req.token.PageAndStatisticsData;
import com.letoken.platform.pub.util.BeanUtil;

import java.util.List;


/**
 * 分页响应对象工具类
 */

public class PageDataUtil {
    public static PageData getPageData(Page page, Class cla) {
        PageRes pageRes = new PageRes((int) page.getCurrent(), (int) page.getSize(), page.getTotal());
        PageData pageData = new PageData();
        pageData.setList(BeanUtil.quickMapList(page.getRecords(), cla));
        pageData.setPage(pageRes);
        return pageData;
    }

    public static PageData getPageData(Page page, List list) {
        PageRes pageRes = new PageRes((int) page.getCurrent(), (int) page.getSize(), page.getTotal());
        PageData pageData = new PageData();
        pageData.setList(list);
        pageData.setPage(pageRes);
        return pageData;
    }

    /**
     * No conversion type is required
     *
     * @param page
     * @return
     */
    public static PageData getPageData(Page page) {
        PageRes pageRes = new PageRes((int) page.getCurrent(), (int) page.getSize(), page.getTotal());
        PageData pageData = new PageData();
        pageData.setList(page.getRecords());
        pageData.setPage(pageRes);
        return pageData;
    }

    public static PageData getMongodbPageData(org.springframework.data.domain.Page page, List list) {
        PageRes pageRes = new PageRes( page.getPageable().getPageNumber(),  page.getSize(), page.getTotalElements());
        PageData pageData = new PageData();
        pageData.setList(list);
        pageData.setPage(pageRes);
        return pageData;
    }

    public static PageAndStatisticsData getPageData(Page page, Object statistics) {
        PageRes pageRes = new PageRes((int) page.getCurrent(), (int) page.getSize(), page.getTotal());
        PageAndStatisticsData pageAndStatisticsData = new PageAndStatisticsData();
        pageAndStatisticsData.setList(page.getRecords());
        pageAndStatisticsData.setPage(pageRes);
        pageAndStatisticsData.setStatistics(statistics);
        return pageAndStatisticsData;
    }


    public static PageSubData getPageSubData(Page page) {
        PageRes pageRes = new PageRes((int) page.getCurrent(), (int) page.getSize(), page.getTotal());
        PageSubData pageData = new PageSubData();
        pageData.setList(page.getRecords());
        pageData.setPage(pageRes);
        return pageData;
    }



}